//
//  LFXRuntime.h
//
//  Created by 米高 http://michaellfx.cnblogs.com on 3/6/15.
//  Copyright (c) 2015 米高. All rights reserved.
//
//  ver 1.1：
//      1. 实现objc命名风格非线程安全的方法混写函数
//      2. 修改ver 1.0的实现
//
//  ver 1.0：
//      实现objc命名风格且线程安全的快速方法混写函数
//

@import Foundation;

// Define
#ifdef __cplusplus
#define LFX_EXTERN  extern "C" __attribute__((visibility ("default")))
#else
#define LFX_EXTERN  extern __attribute__((visibility ("default")))
#endif

/**
 *  非线程安全的混写，用于混写同一个类的多个方法，需外部作线程安全处理
 *
 *  @param cls         需要混写的类
 *  @param srcSelector 原始选择器
 *  @param dstSelector 目标选择器
 */
LFX_EXTERN void methodSwizNonThreadSafe(Class cls, SEL srcSelector, SEL dstSelector);

/**
 *  线程安全的混写，只用于混写同一个类的一个方法，同一个类只能用一次。快捷操作。
 *
 *  @param cls         需要混写的类
 *  @param srcSelector 原始选择器
 *  @param dstSelector 目标选择器
 */
LFX_EXTERN void methodSwizThreadSafe(Class cls, SEL srcSelector, SEL dstSelector);
